package com.dragon.flow.vo.flowable.bpmn;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fuyao.cloud.flowable.dto.BpmnHandleGroupDTO;
import com.fuyao.cloud.flowable.dto.BpmnHandleRulesDTO;
import com.fuyao.cloud.flowable.dto.BpmnHandleUserDTO;
import lombok.Data;

import java.util.List;

/**
 * 流程模型节点DTO类
 */
@Data
public class BpmnPropertiesDTO {

    /*----------------------------  模型属性 --------------------------*/
    /**
     * 流程编码ID: 例如请假为：levave
     */
    private String process_id;
    /**
     * 流程名称
     */
    private String processName;
    /**
     * 流程命名空间名称
     */
    private String process_namespace;
    /**
     * 是否执行提取
     */
    private boolean iseagerexecutionfetch;
    /**
     * 其他
     */
    private String documentation;

    /*----------------------------  节点属性 --------------------------*/

    /**
     * 环节id
     */
    private String overrideid;
    /**
     * 环节名称
     */
    private String name;
    /**
     * 优先级
     */
    private String prioritydefinition;
    /**
     * 到期时间
     */
    private String duedatedefinition;

    /**
     * 环节启用字段 json字符串 “[{}]”
     */
    @JsonIgnore
    private String enabledFields;
    /**
     * 环节禁用按钮 json字符串 “[{}]”
     */
    @JsonIgnore
    private String disabledButtons;
    /**
     * 环节启用按钮 json字符串 “[{}]”
     */
    @JsonIgnore
    private String enabledButtons;
    /**
     * 环节禁用字段 json字符串 “[{}]”
     */
    @JsonIgnore
    private String hideFields;

    /**
     * 环节 处理人配置用户集合 json字符串 “[{}]”
     */
    @JsonIgnore
    private String assigneeUsers;
    /**
     * 环节 处理人配置岗位集合 json字符串 “[{}]”
     */
    @JsonIgnore
    private String assigneeGroups;
    /**
     * 环节 处理人配置规则集合 json字符串 “[{}]”
     */
    @JsonIgnore
    private String assigneeRules;
    /**
     * 审批类型： default: idm
     */
    private String assigneeType;

    private boolean asynchronousdefinition;
    private boolean exclusivedefinition;
    private boolean isforcompensation;

    private Usertaskassignment usertaskassignment;
    private Tasklisteners tasklisteners;
    private Executionlisteners executionlisteners;

    // 拓展处理
    /**
     * 启用字段集合 字段id
     */
    private List<String> enabledFieldsList;
    /**
     * 禁用按钮集合 按钮id
     */
    private List<String> disabledButtonsList;
    /**
     * 启用按钮集合 按钮id
     */
    private List<String> enabledButtonsList;
    /**
     * 隐藏字段集合 字段id
     */
    private List<String> hideFieldsList;
    /**
     * 配置用户对象集合
     */
    private List<BpmnHandleUserDTO> assigneeUsersList;
    /**
     * 配置岗位集合
     */
    private List<BpmnHandleGroupDTO> assigneeGroupsList;
    /**
     * 配置规则集合
     */
    private List<BpmnHandleRulesDTO> assigneeRulesList;

}
